/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package GUI.Facturacion;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

/**
 *
 * @author dianacha
 */
public class FormularioFactura extends JDialog implements ActionListener {
    
    private JTextField numFact;
    private JTextField nitEmp;
    private JTextField codAlm;
    private JTextField idTerm;
    private JTextField codCaje;
    private JTextField fecha;
    private JTextField hora;
    private JTextField idClie;
    
    private JTextField cellCod;
    private JTextField cellCant;
    
    private JTextField subT;
    private JTextField iva;
    private JTextField total;
    
    private JLabel lFacturacion;
    private JButton bOK;
    private JButton bFacturar;
    
    private final boolean[] permisos;
    private TablaFacturacion tf;
    ArrayList<String> namesColumns;
    
    public FormularioFactura(JFrame framePadre, boolean modal, String tipoUser, boolean[] permisos){
        super(framePadre, modal);
        setTitle("Cajero Cocos - Facturación - "+tipoUser);
        
        //Image icono = Toolkit.getDefaultToolkit().getImage("images/logo25x25.jpg");
        //setIconImage(icono);
        this.permisos=permisos;
        inicializarComponentes();
        organizarComponentes();
        setSize(600,700);//h v
        setResizable(true);
        setVisible(true);
    }
    
    private void inicializarComponentes() {
        lFacturacion = new JLabel("Facturación", new ImageIcon("/GUI/images/shopping-bag-96x96.png"), SwingConstants.LEFT);
	lFacturacion.setFont(new Font("Arial", Font.BOLD, 18));
	lFacturacion.setForeground(new Color(78,79,99,190));
        
        numFact = new JTextField();
        nitEmp = new JTextField();
        codAlm = new JTextField();
        idTerm = new JTextField();
        codCaje = new JTextField();
        fecha = new JTextField();
        hora = new JTextField();
        idClie = new JTextField();
        
        subT = new JTextField();
        iva = new JTextField();
        total = new JTextField();
        
        cellCod = new JTextField();
        cellCant = new JTextField();
        
        bFacturar = new JButton("Facturar");
        configurarBoton(bFacturar);
        
        bOK=new JButton("ok");
        configurarBoton(bOK);
        
        habilitarDisponibInicial();
        
        namesColumns = new ArrayList<>();
        namesColumns.add("Cod. Producto");
        namesColumns.add("Nombre");
        namesColumns.add("Precio Unidad");
        namesColumns.add("Cantidad");
        namesColumns.add("Subtotal");
        
        tf = new TablaFacturacion(namesColumns);
    }
    
    private void configurarBoton(JButton boton) {
        boton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        boton.setOpaque(true);
	boton.setBackground(new Color(0,0,0,0));
	boton.addActionListener(this);
    }
    
    private void habilitarDisponibInicial(){
        
                numFact.setEditable(false);
                nitEmp.setEditable(false);
                codAlm.setEditable(false);
                idTerm.setEditable(false);
                codCaje.setEditable(false);
                fecha.setEditable(false);
                hora.setEditable(false);
                idClie.setEditable(true);
                
                subT.setEditable(false);
                iva.setEditable(false);
                total.setEditable(false);
                
                bOK.setEnabled(true);
                bFacturar.setEnabled(false);
    }
    
    private void organizarComponentes() {
        /* ****************** Parte Norte Pestanna */
        JPanel pTitulo = new JPanel();
	pTitulo.setBackground(new Color(0,0,0,0));
	pTitulo.add(lFacturacion);
        
        JPanel pEncabezado = new JPanel(new GridLayout(8,2));
        pEncabezado.setBackground(new Color(0,0,0,0));
        pEncabezado.add(new JLabel( "Número Factura:" ));
        pEncabezado.add(numFact);
        pEncabezado.add(new JLabel( "Nit Empresa:" ));
        pEncabezado.add(nitEmp);
        pEncabezado.add(new JLabel( "Código Almacén:" ));
        pEncabezado.add(codAlm);
        pEncabezado.add(new JLabel( "Id Terminal Venta:" ));
        pEncabezado.add(idTerm);
        pEncabezado.add(new JLabel( "Código Cajero:" ));
        pEncabezado.add(codCaje);
        pEncabezado.add(new JLabel( "Fecha:" ));
        pEncabezado.add(fecha);
        pEncabezado.add(new JLabel( "Hora:" ));
        pEncabezado.add(hora);
        pEncabezado.add(new JLabel( "Id Cliente:" ));
        pEncabezado.add(idClie);
        
        JPanel pNorte = new JPanel(new BorderLayout(0,5));
        pNorte.setBorder(BorderFactory.createEmptyBorder(20,130,0,130));//n,w,s,e
	pNorte.setBackground(new Color(0,0,0,0));
	pNorte.add(pTitulo, BorderLayout.NORTH);
	pNorte.add(pEncabezado, BorderLayout.CENTER);
	
        /* ****************** Parte Central Pestanna */
        JPanel pEnterData = new JPanel(new GridLayout(2,2,5,0));
        pEnterData.add(new JLabel(namesColumns.get(0)));
        pEnterData.add(cellCod);
        pEnterData.add(new JLabel(namesColumns.get(3)));
        pEnterData.add(cellCant);
                
        JPanel pBotonOk = new JPanel();
        pBotonOk.setBackground(new Color(0,0,0,0));
        pBotonOk.add(bOK);
                
        JPanel enterData = new JPanel(new BorderLayout());
	enterData.setBorder(BorderFactory.createEmptyBorder(0,50,0,50));//n,w,s,e
        enterData.setBackground(new Color(0,0,0,0));
        enterData.add(pEnterData, BorderLayout.CENTER);
        enterData.add(pBotonOk, BorderLayout.SOUTH);
        
        JPanel pCentro = new JPanel(new BorderLayout(0,5));
        pCentro.setBorder(BorderFactory.createEmptyBorder(20,80,10,80));//n,w,s,e
        pCentro.setBackground(new Color(0,0,0,0));
        pCentro.add(enterData, BorderLayout.NORTH);
        pCentro.add(tf, BorderLayout.CENTER);
	
        /* ****************** Parte Sur Pestanna */
        JPanel pFinFact = new JPanel(new GridLayout(3,2));
        pFinFact.setBackground(new Color(0,0,0,0));
        pFinFact.add(new JLabel( "Subtotal:" ));
        pFinFact.add(subT);
        pFinFact.add(new JLabel( "Iva:" ));
        pFinFact.add(iva);
        pFinFact.add(new JLabel( "Total:" ));
        pFinFact.add(total);
        
        JPanel pBotonFact = new JPanel();
        pBotonFact.setBorder(BorderFactory.createEmptyBorder(0,130,0,130));//n,w,s,e
	pBotonFact.setBackground(new Color(0,0,0,0));
	pBotonFact.add(bFacturar);
        
        JPanel pSur = new JPanel(new BorderLayout(0,10));
        pSur.setBorder(BorderFactory.createEmptyBorder(0,130,20,130));//n,w,s,e
	pSur.setBackground(new Color(0,0,0,0));
	pSur.add(pFinFact, BorderLayout.CENTER);
	pSur.add(pBotonFact, BorderLayout.SOUTH);
        
        /* ****************** General Pestanna */
	this.add(pNorte, BorderLayout.NORTH);
	this.add(pCentro, BorderLayout.CENTER);
	this.add(pSur, BorderLayout.SOUTH);
    }
    
    @Override
    public void actionPerformed(ActionEvent ae) {
        if(ae.getSource()==bOK){
            agregarProducto();
        }
        if(ae.getSource()==bFacturar){
            facturar();
        }
    }

    private void agregarProducto() {
        
        ArrayList<String> parNuevo = new ArrayList<>();
        parNuevo.add(cellCod.getText());
        parNuevo.add(cellCant.getText());
        
        if((!"".equals(parNuevo.get(0)))&&(!"".equals(parNuevo.get(1)))){
            //verificar si el codProducto está en la bd
            tf.agregarFila(parNuevo);
            bFacturar.setEnabled(true);
            limpiarPar();
            parNuevo.clear();
             //si el producto no está en la bd, mostrar mensaje y limpiarCampos()
        }
        else{
            System.err.println("Error: Faltan Datos");
            limpiarPar();
            parNuevo.clear();
        }
    }

    private void limpiarPar() {
        cellCod.setText("");
        cellCant.setText("");
    }
    
    private void limpiarTodosLosCampos() {
        numFact.setText("");
        nitEmp.setText("");
        codAlm.setText("");
        idTerm.setText("");
        codCaje.setText("");
        fecha.setText("");
        hora.setText("");
        idClie.setText("");
        
        cellCod.setText("");
        cellCant.setText("");
        tf.limpiarTable();
        
        subT.setText("");
        iva.setText("");
        total.setText("");
    }

    private void facturar() {
        System.out.println("iniciando pagos!");
        //servidor.pagarFactura()
        FormularioPagoFactura pagos = new FormularioPagoFactura(this, true);
        
        limpiarTodosLosCampos();
        habilitarDisponibInicial();
    }
}
